package jp.co.cos.ittrick.channel.controller;

import org.slim3.controller.router.RouterImpl;
import org.slim3.util.RequestUtil;

/**
 * IT TRICK 公開部分ルーティング
 * @author takahara
 *
 */
public class AppRouter extends RouterImpl {

	public AppRouter() {

		// sitemaps.xml
		addRouting(
				"/sitemaps.xml",
				"/sitemaps");

		// sitemaps-mobile.xml
        addRouting(
                "/sitemaps-mobile.xml",
                "/sitemapsMobile");

		// channelトップ
		addRouting(
				"/{channelKey}\\.html",
				"/channel/channel?channel={channelKey}");

		// chapterトップ
		addRouting(
				"/{channelKey}/c{chapter}\\.html",
				"/channel/chapter?channel={channelKey}&chapter={chapter}");

		// ページ
		addRouting(
				"/{channelKey}/c{chapterKey}/page{pageKey}\\.html",
				"/channel/page?channel={channelKey}&chapter={chapterKey}&page={pageKey}");

		// Pre
        addRouting(
                "/{channelKey}/c{chapterKey}/page{pageKey}/pre{preKey}\\.html",
                "/channel/pre?channel={channelKey}&chapter={chapterKey}&page={pageKey}&pre={preKey}");

		// 記事
        addRouting(
                "/article/{articleKey}",
                "/article/?article={articleKey}");
	}


	/**
	 * <pre>
	 * 拡張子つきURIが静的リクエストと見なされるのを回避するには、
	 * RouterImpl#IsStatic()をオーバーライドして、処理を記述する。
	 * </pre>
	 */
	@Override
	public boolean isStatic(String path) throws NullPointerException {
		boolean isStatic = super.isStatic(path);

		// 複数の拡張子を解除する場合は "||" を使用する。
		if("html".equals(RequestUtil.getExtension(path)) || "xml".equals(RequestUtil.getExtension(path))) {
			return false;
		} else {
			return isStatic;
		}
	}

}
